Les transformations cartographiques

Timothée Giraud

2018-11-16

Les anamorphoses

Les anamorphoses cartographiques
Nicolas Lambert, 2015

Théorie

“L’anamorphose classique est une représentation des États (ou de mailles quelconques) par des rectangles ou des polygones quelconques en fonction d’une quantité qui leur est rattaché.”

“Certaines anamorphoses traduisent des différences entre un espace de référence et un espace représenté, ou construit, exprimant par exemple des liens entre des villes selon un moyen de transport donné.”

“On s’efforce de garder l’arrangement général des mailles ou la silhouette du continent.”

Brunet, R., Ferras, R., & Théry, H. (1993). Les mots de la géographie: dictionnaire critique (No. 03) 911 BRU).



Il existe donc principalement deux types de cartogrammes :

Les cartogrammes de surface

Les cartogrammes de Dorling

La taille des cercles est proportionnelle à une variable.

La position des cercles est définie selon les positions de départ.

Dorling, Daniel (1996): Area Cartograms: Their Use and Creation, Concepts and Techniques in Modern Geography (CATMOG), 59

Le principe

Exemple

Exemple

Précautions d’emploi

- On identifie assez mal l’espace
On peut nommer les cercles pour se repérer
On peut s’aider de la couleur pour faire des clusters et mieux identifier les blocks géographiques

+ La perception de la quantité est très bonne.
Les tailles de cercles sont vraiment comparables

Mise en oeuvre avec R

Le package cartogram permet de réaliser les cartogrammes de Dorling.

library(sf)
library(cartogram)
library(cartography)
par(mar = c(0,0,0,0))
com46 <- readRDS(file = "com46.rds")
plot(st_geometry(com46))

plot(st_geometry(com46), col = "ivory2")
propSymbolsLayer(com46, var = "TOT", legend.pos = "topleft")

com46_dorling <- cartogram_dorling(x = com46, weight = "TOT", k = 10)
plot(st_geometry(com46_dorling), col = 'ivory2')

Les cartogrammes non continus

La taille des polygones est proportionnelle à une variable.

L’agencement des polygones les uns par rapport aux autres est conservée.

La forme des polygones est ressemblante.

Exemple

Précautions d’emploi

- Non contigu, la topologie est perdue.

+ La conservation de la forme des polygones est optimisée.

Mise en oeuvre avec R

library(sf)
library(cartogram)
library(cartography)
par(mar = c(0,0,0,0))
com46 <- readRDS(file = "com46.rds")
com46_ncont <- cartogram_ncont(x = com46, weight = "TOT", k = 1.5)
plot(st_geometry(com46_ncont), col = 'ivory2')

Autres logiciels

Cette représentation est possible avec Magrit.
Representation > Cartogram > méthode Olson 2005

Les cartogrammes continus

La taille des polygones est proportionnelle à une variable.

L’agencement des polygones les uns par rapport aux autres est conservée.

Pour conserver la contiguité, la forme des polygones est fortement transformée.

Exemple

Précautions d’emploi

- Par rapport aux anamorphoses non contigues, la forme des polygones est fortement distordue.

+ C’est une “vraie carte de géographie” : la topologie et la contiguité sont conservées.

Mise en oeuvre avec R

library(sf)
library(cartogram)
library(cartography)
par(mar = c(0,0,0,0))
com46 <- readRDS(file = "com46.rds")
com46_cont <- cartogram_cont(x = com46, weight = "TOT", itermax = 5)
plot(st_geometry(com46_cont), col = 'ivory2')

Autres logiciels

Cette représentation est possible avec Magrit.
Representation > Cartogram > méthode Dougenik & al. 1985

Le logiciel ScapeToad est dédié à la construction de telles anamorphoses.

Il existe surement des extensions QGIS ou ArcGis…

Les cartogrammes de distance

Il s’agit de déformer la carte en fonction de distances non topologiques.

Exemple

Exemple

Précautions d’emploi

- Experimental, difficile à réaliser.
Les résultats doivent être interprétés soigneusement en fonction du sujet concerné, des hypothèses émises et des données entrées.

+ Très original.
Cartes assez “expressives”

Mise en oeuvre avec R et QGIS

Autres logiciels

Le logiciel darcy permet de réaliser ces anamorphoses.

Bilan

Interêts des anamorphoses

Représentation cartographique perçue comme innovante (même si la methode date de 40 ans)

Image très généralisée qui rend bien compte des quantités et des gradiants.

Une vraie image de communication : provoque, suscite l’intérêt, véhicule un message fort, interpelle.

Faiblesses des anamorphoses

Perte des repères visuels (difficile de retrouver son pays, ou sa région sur la carte).

Ne permet pas de connaître les situations locales.

Demande un effort de lecture.

Gestion des données manquantes

Les grilles régulières

Par une série d’opération SIG assez simple il est possible de transformer des données d’un maillage initial vers un maillage régulier plus neutre et plus simple.

Exemple

Exemple

Précautions d’emploi

- Perte de précision, maillage sans signification.
La version simple (au prorata de la surface), implique une equirépartition du phénomène dans chaque unités.

+ Permet la comparaison de maillages différents, à plusieurs dates ou de différentes sources.

Mise en oeuvre dans R

library(sf)
library(cartogram)
library(cartography)
par(mar = c(0,0,0,0))
com46 <- readRDS(file = "com46.rds")
bks <- getBreaks(v = com46$PAGR, method = "q6", nclass = 8)[-1]
cols <- carto.pal("green.pal", 2, "wine.pal", 3)
choroLayer(x = com46, var = "PAGR", breaks = bks, col = cols, lwd = .5, 
           legend.pos = "topleft")

com46_grid <- getGridLayer(x = com46, cellsize = 5000 * 5000, 
                           type = "hexagonal", var = c("AGR", "TOT"))
com46_grid$PAGR <- 100 * com46_grid$AGR / com46_grid$TOT
choroLayer(x = com46_grid, var = "PAGR", breaks = bks, col = cols,
           lwd = .5, legend.pos = "topleft")

Autres logiciels

Les SIG!

Les discontinuités

Ce type de représentation permet de souligner cartographiquement les discontinuités territoriales d’un phénomène.

L’accent est porter sur ce qui distingue des territoires.

Pour chaque frontière nous calculons le rapports ou la différence des valeurs des polygones de part et d’autre. Puis nous représentons la frontière par un figuré d’autant plus épais que la différence est forte.

Il est souvent bénéfique de coupler ce type de représentation à une représentation choroplèthe (pour comprendre le sens des discontinuités).

Exemple

Exemple

Précautions d’emploi

- Ces cartes ne sont pas évidentes à paramétrer.
Le choix des critères (seuil, type de différences…) va fortement influencer la représentation.
En fonction du maillage la lisibilité peut être faible.

+ Représentation très puissante pour montrer les inégalités.

Mise en oeuvre dans R

library(sf)
library(cartography)
par(mar = c(0,0,0,0))
com46 <- readRDS(file = "com46.rds")
com46_border <- getBorders(x = com46, id = "INSEE_COM")
plot(st_geometry(com46), border = NA, col = "grey60")
# Plot borders
plot(st_geometry(com46_border), 
     col = sample(x = rainbow(nrow(com46_border))), 
     lwd = 3, add = TRUE)

bks <- c(0, 5, 10, 20, 40, 67)
cols <- carto.pal("wine.pal", 5)
choroLayer(x = com46, var = "PCAD", breaks = bks, col = cols, lwd = .5, 
           legend.pos = "topleft", border = NA)
discLayer(x = com46_border, df = com46,
          var = "PCAD", col="darkblue", nclass=3,
          method="quantile", threshold = 0.33, sizemin = 0.5,
          sizemax = 7, type = "abs", 
          legend.title.txt = "Discontinuities",
          legend.pos = "bottomright", add=TRUE)

Autres logiciels

Magrit permet ce type de représentation.

On peut utiliser un SIG en réalisant une longue suite d’opérations.

Le lissage spatial

L’idée principale du lissage est de filtrer l’information pour révéler des structures spatiales sous-jacentes.

C’est un ensemble de méthodes qui consistent à affecter aux points que l’on observe une valeur prenant en compte les valeurs de leur voisinnage.

Il existe plusieurs méthodes de lissage (kde, potentiels…) plus ou moins paramétrables.

Cette méthode permet de passer représentations ponctuelles à une représentation continue.

Le lissage par potentiels

Vignette du package SpatialPosition

Exemple

Exemple

Précautions d’emploi

- Il est difficile de paramétrer correctement les fonctions de lissages.
Elles doivent s’appuyer sur des hypothèses de comportement dans l’espace.
La compréhension par un public large n’est pas évidente, il faut alors simplifier les légendes, la présentation de la méthode.

+ Permet de faire ressortir des phénomènes spatiaux sous-jacents invisibles directement.
Les cartes produites attirent l’oeil par leur originalité.
Cette méthode permet de passer d’une représentation ponctuelle ou discontuinue (dans un maillage) à une représentation continue s’affranchissant des maillages existants.

Mise en oeuvre dans R

library(sf)
library(cartography)
library(SpatialPosition)
par(mar = c(0,0,1.2,0), mfrow = c(2, 2))
com46 <- readRDS(file = "com46.rds")
bks <- getBreaks(v = com46$POUV, method = "quantile", nclass = 10)[-c(1,2)]
cols <- carto.pal("turquoise.pal", 8)
choroLayer(x = com46, var = "POUV", breaks = bks, col = cols, 
           lwd = 0.2, border = "grey80", 
           legend.pos = "topleft", legend.title.txt = "% ouvriers")
layoutLayer("Taux brut", sources = "", author = "")

com46_sp <- as(com46, "Spatial")
row.names(com46_sp) <- com46_sp$INSEE_COM
com46_sp$OUV <- com46_sp$OUV * 100
com46_pot <- quickStewart(spdf = com46_sp, 
                         df = com46_sp@data, 
                         var = "OUV",
                         var2 = "TOT",
                         span = 5000, 
                         beta = 2, breaks = bks,
                         mask = com46_sp)
choroLayer(spdf = com46_pot, 
           var = "center", breaks = bks, col = cols, 
           legend.pos = "topleft", lwd = 0.2, border = "grey80",
           legend.title.txt = "% ouvriers")
layoutLayer("Lissage continu, portée 5 km", sources = "", author = "")

mat_fly <- CreateDistMatrix(knownpts = com46_sp, unknownpts = com46_sp)
com46_pot_fly_OUV <- stewart(knownpts = com46_sp, unknownpts = com46_sp, 
                     matdist = mat_fly, varname = "OUV", 
                     typefct = "exponential", span = 5000, 
                     beta = 2)
com46_pot_fly <- stewart(knownpts = com46_sp, unknownpts = com46_sp, 
                     matdist = mat_fly, varname = "TOT", 
                     typefct = "exponential", span = 5000, 
                     beta = 2)
com46_pot_fly$POUVL <- com46_pot_fly_OUV$OUTPUT / com46_pot_fly$OUTPUT
choroLayer(spdf = com46_pot_fly, 
           var = "POUVL", breaks = bks, col = cols, 
           legend.pos = "topleft", lwd = 0.2, border = "grey80", 
           legend.title.txt = "% ouvriers")
layoutLayer("Lissage dans les mailles, portée 5 km", sources = "", author = "")


mat_road <- readRDS("mat46.rds")
com46_pot_road_OUV <- stewart(knownpts = com46_sp, unknownpts = com46_sp, 
                     matdist = mat_road, varname = "OUV", 
                     typefct = "exponential", span = 10, 
                     beta = 2)
com46_pot_road <- stewart(knownpts = com46_sp, unknownpts = com46_sp, 
                     matdist = mat_road, varname = "TOT", 
                     typefct = "exponential", span = 10, 
                     beta = 2)
com46_pot_road$POUVL <- com46_pot_road_OUV$OUTPUT / com46_pot_road$OUTPUT
choroLayer(spdf = com46_pot_road, 
           var = "POUVL", breaks = bks, col = cols, 
           legend.pos = "topleft", lwd = 0.2, border = "grey80", 
           legend.title.txt = "% ouvriers")
layoutLayer("Lissage dans les mailles, portée 10 min", sources = "", author = "")

Autres logiciels

La méthode de lissage par potentiels est disponible dans Magrit.

Les SIG donnent accès à d’autre méthodes comme les KDE.